1. Field of the Invention
This invention relates to a computer method and system that provides multi-user environments over computer networks such as the Internet, and more specifically a method and system that allows users to interact and collaborate over the web in real-time.
2. Technical Background
The Internet, as a vast network of disparate computing devices communicating over common standards and protocols, is today the largest and most accessible information store in human history. Most of this information is stored as web pages on the World Wide Web (WWW or web). Typically, there are two important components involved in a web transaction: a server system (web server) and a client system (client). The server system is comprised of a hardware component (i.e. a computing device) and a software component (i.e. a web engine). The web engine controls the web server's hardware component to perform three main functions: listen for web requests (i.e. HTTP requests—defined below) from client systems, index and fetch the requested information, and send an appropriate response back to the client. The web engine indexes each piece of information (or “file”) stored on the web server using a globally unique reference known as a Uniform Resource Locator or URL.
The client system is comprised of a hardware component (i.e. a computing device) and a software component (i.e. a web browser or browser). The web browser controls the hardware component of the client system as to enable four functions: interface with the user to capture the user's web requests, contact the appropriate web server and submit the request, wait for the web server's response, and display the web server's response in a manner that is meaningful and appropriate for the user.
When the user requests a web page, either by typing a URL into the browser or by performing some other action such as clicking on an HTML (i.e. Hyper Text Markup Language—defined later) hyperlink, the browser sends the user's request to the server using a common protocol known as the Hyper Text Transport Protocol or HTTP. In communicating the user's request, the browser must first open a HTTP connection with the server and transmit the requested URL. The HTTP connection remains open while the browser waits for the server's response.
After receiving the request from the browser, the server fetches the file associated with the URL and transmits the file to the browser. If the URL is invalid, or no file is associated with it, then an appropriate error response is sent. Once the response is sent, the server closes the HTTP connection. Any further requests that the user might make would require the browser to open a fresh HTTP connection to initiate the entire process just described. Therefore, HTTP is commonly known as a “stateless” protocol because there is no persistent connection between client and server.
The browser, having received the server's response, must now display it in a meaningful manner for the user. The vast majority of web pages are encoded using a language known as Hyper Text Markup Language (HTML). HTML is a standard language for expressing the layout of sets of objects (e.g. textbox areas, drop down menus, etc.) and their structural relationships. The browser interprets the HTML expressions and renders them within the browser window, resulting in a displayed web page.
The server's response may also reference programs that define the “look and feel” of the web page. These programs, also stored on the server system, are automatically downloaded and interpreted by the browser to allow for the dynamic alteration of the objects within the browser window. These programs, for example, can alter the size, color, and position of an object in response to a user's action. New objects can be created and old objects can be completely removed from the web page. These are just some of the ways in which web application developers can programmatically create a more responsive and/or predictive user interface on web pages.
These programs are typically written in a language called EMCAScript (hereafter JAVASCRIPT) because a platform to interpret JAVASCRIPT programs is pre-packaged with all modern browsers. Other common platforms include the JAVA Virtual Machine, which is used to execute JAVA Applet programs, and the ADOBE FLASH Player, which interprets ADOBE FLASH Script programs. By writing programs in these various languages, JAVASCRIPT, JAVA Applet, and ADOBE FLASH Script, developers can create sophisticated user interfaces for web pages.
Web 2.0, a recent movement in web application design, with the goal of making web pages even more responsive to the user's needs, is centered on a new use of the JAVASCRIPT language. Asynchronous XML and JAVASCRIPT (AJAX) is a powerful set of JAVASCRIPT technologies supported by modern browsers that allows the client system to make remote procedure calls with the server (via HTTP). These calls enable web developers to shift more of the business logic processing to the client system: JAVASCRIPT programs that use AJAX can dynamically request information or services from the server in response to A. a changed state, and/or B. a user's action. The programs can also process the server's response and make any necessary updates without having to completely re-download or re-render the web page. In contrast, non-AJAX web applications place business logic computations on the server: each new update requires trips to the server and then back again. With these functions shifted onto client systems, AJAX allows web applications to be much more responsive to the user.